﻿###########################################
#
#  Super Octo Track X-O
#
#  A very simple music player based on
#  the XO-Chip audio system played
#  with the keypad.
#  F and B change tempo, 0 erases the track.
#  1 2 3 4 C add bits to the note to be played.
#  Hold 0 while playing to make a new note.
#  Hold A as the cursor finishes the loop
#  to shorten the loop by 32.
#  Press 7 to switch between play mode and edit mode.
#  Press 8 to advance tick in edit mode.
#  Hold E to advance or 9 to reverse through
#  tracks. Only works as the cursor finishes
#  the loop. There are 8 tracks.
#
#  By Tom Rintjema
#
###########################################

:alias duration v2      # Delay length for tempo
:alias sprite_offset v3 # How far to move the sound sprite down
:alias tick v4          # Which step of the track we are on
:alias notekey v5       # Note in binary to play
:alias mask v6          # Mask used to change notes
:alias masktemp v7      # Temp mask so we can XOR mask with notekey
:alias page v8          # Used to switch planes
:alias length v9        # How much track we are going to play
:alias current_track va # Which track we are working on
:alias mode vb

: main
	plane 2
	i := title
	drawtitle
	plane 1
	i := title2
	drawtitle
	ve := 255
	delay := ve
	loop
		ve := delay
		if ve != 0 then
	again
	hires              # Set screen res to 128 x 64
	duration := 4      # Start with a quick tempo
	sprite_offset := 8 # Set how far down the sprite will draw
	length := 128      # Start with maximum length tracks
	i := track1        # Start with track 1
	mode := 1
	loop
		if mode == 1 begin
			load notekey - notekey # Get the data from memory
			setnote                # Get music input
			save notekey - notekey # Save data
			getnote                # Look up what note to play
			setduration            # Change tempo
			note                   # Play sound and draw graphics
			switchmode             # Handle mode related input
			dotick                 # Move and get input
		else
			load notekey - notekey # Get the data from memory
			setnote                # Get music input
			save notekey - notekey # Save data
			getnote                # Look up what note to play
			setduration            # Change tempo
			note                   # Play sound and draw graphics
			switchmode             # Handle mode related input
			doedittick             # Move and get input
		end
	again

: drawtitle
	v0 := 0 # x
	v1 := 0 # y
	v3 := 32 # constant
	loop
		sprite v0 v1 0
		i  += v3
		v0 += 16
		if v0 == 64 then v1 += 16
		if v0 == 64 then v0 := 0
		if v1 != 32 then
	again
;

: dotick
	i := dot
	sprite tick notekey 1
	tick += 1
	if tick == length begin
		scroll-down 15
		scroll-down 15
		scroll-down 2
		if page == 0 begin
			page := 32
			plane 2
		else
			page := 0
			plane 1
		end
		tick := 0
		clear
		changelength
		selecttrack
	end
	settrack
	i += tick
;

: doedittick
	plane 1
	clear
	i := dot
	sprite tick notekey 1
	plane 2
	notekey += 32
	sprite tick notekey 1
	scroll-down 1
	if tick == length begin
		tick := 0
		clear
		changelength
		selecttrack
	end
	settrack
	i += tick
;

: setnote
	mask := 0
	v0 := 0     if v0 key then notekey := 0
	v0 := 1     if v0 key then mask := 0b000000001
	masktemp := 0b000000010
	v0 := 2     if v0 key then mask |= masktemp
	masktemp := 0b000000100
	v0 := 3     if v0 key then mask |= masktemp
	masktemp := 0b000001000
	v0 := 0x0C  if v0 key then mask |= masktemp
	masktemp := 0b000010000
	v0 := 4     if v0 key then mask |= masktemp
	notekey ^= mask
;

: getnote
	if notekey == 0b00000000 then i := ---
	if notekey == 0b00000001 then i := E-5
	if notekey == 0b00000010 then i := D$5
	if notekey == 0b00000011 then i := D-5
	if notekey == 0b00000100 then i := C$5
	if notekey == 0b00000101 then i := C-5
	if notekey == 0b00000110 then i := B-4
	if notekey == 0b00000111 then i := A$4
	if notekey == 0b00001000 then i := A-4
	if notekey == 0b00001001 then i := G$4
	if notekey == 0b00001010 then i := G-4
	if notekey == 0b00001011 then i := F$4
	if notekey == 0b00001100 then i := F-4
	if notekey == 0b00001101 then i := E-4
	if notekey == 0b00001110 then i := D$4
	if notekey == 0b00001111 then i := D-4
	if notekey == 0b00010000 then i := C$4
	if notekey == 0b00010001 then i := C-4 # Middle C
	if notekey == 0b00010010 then i := B-3
	if notekey == 0b00010011 then i := A$3
	if notekey == 0b00010100 then i := A-3
	if notekey == 0b00010101 then i := G$3
	if notekey == 0b00010110 then i := G-3
	if notekey == 0b00010111 then i := F$3
	if notekey == 0b00011000 then i := F-3
	if notekey == 0b00011001 then i := E-3
	if notekey == 0b00011010 then i := D$3
	if notekey == 0b00011011 then i := D-3
	if notekey == 0b00011100 then i := C$3
	if notekey == 0b00011101 then i := C-3
	if notekey == 0b00011110 then i := B-2
	if notekey == 0b00011111 then i := A$2
;

: setduration
	v0 := 0x0B  if v0 key then duration += 1
	v0 := 0x0F  if v0 key then duration += -1
	if duration == 0 then duration := 1
;

: note
	if mode == 1 then
	sprite tick sprite_offset 0x0F
	audio
	delay  := duration
	vf     := 16
	buzzer := vf
	loop
		vf := delay
		if vf != 0 then
	again
	if mode == 1 then
	sprite tick sprite_offset 0x0F
;

: changelength
	v0 := 0x0A if v0 key then length += -32
	if length == 0 then length := 128
;

: settrack
	if current_track == 0 then i := track1
	if current_track == 1 then i := track2
	if current_track == 2 then i := track3
	if current_track == 3 then i := track4
	if current_track == 4 then i := track5
	if current_track == 5 then i := track6
	if current_track == 6 then i := track7
	if current_track == 7 then i := track8
;

: selecttrack
	v0 := 0x0E if v0 key then current_track += 1
	v0 := 0x09 if v0 key then current_track += -1
	if current_track == 8 then current_track := 0
	if current_track == 255 then current_track := 7
;

: switchmode
	mask := 1
	v0 := 0x07 if v0 key then mode ^= mask
	if mode == 0 then
	v0 := 0x08 if v0 key then tick += 1
;

: title
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7F 0xFF 0x00 0x00 0x00 0x00 0x3A 0xBB
0x22 0xAA 0x22 0xAA 0x3A 0xBB 0x0A 0xA2
0x0A 0xA2 0x0A 0xA2 0x3B 0xA3 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0xFF 0xFF 0x00 0x00 0x00 0x00 0xB8 0x77 
0x28 0x54 0x28 0x54 0x30 0x54 0x28 0x54 
0x28 0x54 0x28 0x54 0xA8 0x77 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0xFF 0xFF 0x00 0x00 0x00 0x00 0x77 0x1D 
0x25 0x09 0x25 0x09 0x25 0x09 0x25 0x09 
0x25 0x09 0x25 0x09 0x27 0x09 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0xFF 0xFE 0x00 0x00 0x00 0x00 0xDD 0xD4 
0x55 0x14 0x55 0x14 0x9D 0x18 0x55 0x14 
0x55 0x14 0x55 0x14 0x55 0xD4 0x00 0x00 
0x00 0x00 0x7F 0xFF 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0xFF 0xFF 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00  
0x00 0x00 0xFF 0xFF 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00  
0x00 0x00 0xFF 0xFE 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

: title2
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x7F 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0xFF 0xFE 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x7F 0xFF 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0xFF 0xFF 0x00 0x00 0x07 0x83 
0x03 0xCF 0x00 0xFC 0x00 0x38 0x00 0x7C 
0x01 0xEE 0x03 0xC6 0x07 0x83 0x07 0x01 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0xFF 0xFF 0x00 0x00 0x83 0xC0 
0x07 0xC0 0x07 0x90 0xCE 0x08 0x6C 0x08 
0x0C 0x08 0x06 0x18 0x07 0x30 0x01 0xE0 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0xFF 0xFE 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00


: --- 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 # Rest
: E-5 0xF1 0xC7 0x1C 0x71 0xC7 0x1C 0x71 0xC7 0x1C 0x71 0xC7 0x8E 0x38 0xE3 0x8E 0x38 
: D$5 0xF1 0xC7 0x8E 0x38 0x71 0xC3 0x8E 0x3C 0x71 0xC3 0x8E 0x1C 0x71 0xE3 0x8E 0x1C 
: D-5 0xF1 0xE3 0xC7 0x0E 0x1C 0x78 0xF1 0xC3 0x87 0x1E 0x3C 0x70 0xE1 0xC3 0x8F 0x1E 
: C$5 0xF0 0xE1 0xE3 0xC7 0x87 0x0E 0x1E 0x3C 0x78 0x70 0xF1 0xE3 0xC3 0x87 0x0F 0x1E 
: C-5 0xF0 0xF0 0xF1 0xE1 0xE1 0xE3 0xC3 0xC3 0xC7 0x87 0x87 0x0F 0x0F 0x0E 0x1E 0x1E 
: B-4 0xF8 0x78 0x78 0x78 0x78 0x78 0x78 0x78 0x78 0x3C 0x3C 0x3C 0x3C 0x3C 0x3C 0x3C 
: A$4 0xF8 0x78 0x3C 0x3E 0x1E 0x1F 0x0F 0x07 0x87 0x83 0xC3 0xE1 0xE0 0xF0 0xF0 0x78 
: A-4 0xF8 0x3C 0x1E 0x0F 0x07 0x83 0xE1 0xF0 0xF8 0x7C 0x3E 0x1F 0x07 0x83 0xC1 0xE0 
: G$4 0xF8 0x3E 0x0F 0x87 0xC1 0xF0 0x7C 0x3E 0x0F 0x83 0xC1 0xF0 0x7C 0x1E 0x0F 0x83 
: G-4 0xFC 0x1F 0x07 0xC1 0xF0 0x7C 0x0F 0x83 0xE0 0xF8 0x3E 0x0F 0x81 0xF0 0x7C 0x1F
: F$4 0xFC 0x1F 0x83 0xF0 0x7C 0x0F 0x81 0xF0 0x3E 0x0F 0xC1 0xF8 0x3E 0x07 0xC0 0xF8 
: F-4 0xFC 0x0F 0xC1 0xF8 0x1F 0x83 0xF0 0x3F 0x07 0xE0 0x7C 0x0F 0xC0 0xF8 0x1F 0x81 
: E-4 0xFE 0x07 0xE0 0x7E 0x07 0xE0 0x7E 0x07 0xE0 0x7F 0x03 0xF0 0x3F 0x03 0xF0 0x3F 
: D$4 0xFE 0x07 0xF0 0x3F 0x81 0xFC 0x0F 0xC0 0x7E 0x03 0xF0 0x1F 0x81 0xFC 0x0F 0xE0 
: D-4 0xFE 0x03 0xF8 0x0F 0xE0 0x7F 0x01 0xFC 0x07 0xF0 0x3F 0x80 0xFE 0x03 0xF8 0x1F 
: C$4 0xFF 0x01 0xFC 0x07 0xF8 0x0F 0xE0 0x3F 0x80 0x7F 0x01 0xFC 0x03 0xF8 0x0F 0xE0  
: C-4 0xFF 0x00 0xFE 0x01 0xFE 0x03 0xFC 0x03 0xF8 0x07 0xF8 0x0F 0xF0 0x0F 0xE0 0x1F # Middle C
: B-3 0xFF 0x80 0x7F 0x80 0x7F 0x80 0x7F 0x80 0x3F 0xC0 0x3F 0xC0 0x3F 0xC0 0x3F 0xC0 
: A$3 0xFF 0x80 0x3F 0xC0 0x1F 0xE0 0x0F 0xF8 0x07 0xFC 0x03 0xFE 0x00 0xFF 0x00 0x7F 
: A-3 0xFF 0xC0 0x1F 0xF0 0x07 0xFC 0x01 0xFF 0x00 0x7F 0xC0 0x1F 0xF8 0x03 0xFE 0x00 
: G$3 0xFF 0xC0 0x0F 0xFC 0x01 0xFF 0x80 0x3F 0xF0 0x03 0xFE 0x00 0x7F 0xE0 0x0F 0xFC 
: G-3 0xFF 0xE0 0x07 0xFE 0x00 0x3F 0xF0 0x03 0xFF 0x00 0x1F 0xF8 0x01 0xFF 0x80 0x0F
: F$3 0xFF 0xE0 0x03 0xFF 0x80 0x0F 0xFE 0x00 0x7F 0xF0 0x01 0xFF 0xC0 0x07 0xFE 0x00
: F-3 0xFF 0xF0 0x01 0xFF 0xE0 0x03 0xFF 0xC0 0x07 0xFF 0x80 0x0F 0xFF 0x00 0x1F 0xFE
: E-3 0xFF 0xF8 0x00 0x7F 0xF8 0x00 0x7F 0xF8 0x00 0x3F 0xFC 0x00 0x3F 0xFC 0x00 0x3F
: D$3 0xFF 0xF8 0x00 0x3F 0xFE 0x00 0x0F 0xFF 0x80 0x03 0xFF 0xE0 0x00 0xFF 0xF8 0x00
: D-3 0xFF 0xFC 0x00 0x0F 0xFF 0xC0 0x01 0xFF 0xF8 0x00 0x1F 0xFF 0x00 0x03 0xFF 0xF0
: C$3 0xFF 0xFE 0x00 0x07 0xFF 0xF0 0x00 0x3F 0xFF 0x80 0x01 0xFF 0xFC 0x00 0x0F 0xFF
: C-3 0xFF 0xFF 0x00 0x01 0xFF 0xFE 0x00 0x03 0xFF 0xF8 0x00 0x07 0xFF 0xF0 0x00 0x0F
: B-2 0xFF 0xFF 0x80 0x00 0x7F 0xFF 0x80 0x00 0x3F 0xFF 0xC0 0x00 0x3F 0xFF 0xC0 0x00
: A$2 0xFF 0xFF 0xC0 0x00 0x1F 0xFF 0xF0 0x00 0x07 0xFF 0xFE 0x00 0x00 0xFF 0xFF 0x80

: dot
0b10000000

: track1 # Twinkle Twinkle
0b00010001 # 1/4 C-4
0b00000000
0b00000000
0b00000000
0b00010001 # 1/4 C-4
0b00000000
0b00000000
0b00000000
0b00001010 # 1/4 G-4
0b00000000
0b00000000
0b00000000
0b00001010 # 1/4 G-4
0b00000000
0b00000000
0b00000000
0b00001000 # 1/4 A-4
0b00000000
0b00000000
0b00000000
0b00001000 # 1/4 A-4
0b00000000
0b00000000
0b00000000
0b00001010 # 1/2 G-4
0b00001010 #
0b00000000
0b00000000
0b00000000 # Rest
0b00000000
0b00000000
0b00000000
0b00001100 # 1/4 F-4
0b00000000
0b00000000
0b00000000
0b00001100 # 1/4 F-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001111 # 1/4 D-4
0b00000000
0b00000000
0b00000000
0b00001111 # 1/4 D-4
0b00000000
0b00000000
0b00000000
0b00010001 # 1/2 C-4
0b00010001 #
0b00000000
0b00000000
0b00000000 # Rest
0b00000000
0b00000000
0b00000000
0b00001010 # 1/4 G-4
0b00000000
0b00000000
0b00000000
0b00001010 # 1/4 G-4
0b00000000
0b00000000
0b00000000
0b00001100 # 1/4 F-4
0b00000000
0b00000000
0b00000000
0b00001100 # 1/4 F-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001111 # 1/2 D-4
0b00001111 #
0b00000000
0b00000000
0b00000000 # Rest
0b00000000
0b00000000
0b00000000
0b00001010 # 1/4 G-4
0b00000000
0b00000000
0b00000000
0b00001010 # 1/4 G-4
0b00000000
0b00000000
0b00000000
0b00001100 # 1/4 F-4
0b00000000
0b00000000
0b00000000
0b00001100 # 1/4 F-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001111 # 1/2 D-4
0b00001111 #
0b00000000
0b00000000
0b00000000 # Rest
0b00000000
0b00000000
0b00000000

: track2 # Mary Had A Little Lamb
0b00001101 # 3/4 E-4
0b00001101 #
0b00001101 #
0b00000000
0b00001111 # 1/4 D-4
0b00000000
0b00000000
0b00000000
0b00010001 # 1/4 C-4
0b00000000
0b00000000
0b00000000
0b00001111 # 1/4 D-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/2 E-4
0b00001101 # 
0b00000000
0b00000000
0b00000000 # Rest
0b00000000
0b00000000
0b00000000
0b00001111 # 1/4 D-4
0b00000000
0b00000000
0b00000000
0b00001111 # 1/4 D-4
0b00000000
0b00000000
0b00000000
0b00001111 # 1/2 D-4
0b00001111 #
0b00000000
0b00000000
0b00000000 # Rest
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001010 # 1/4 G-4
0b00000000
0b00000000
0b00000000
0b00001010 # 1/2 G-4
0b00001010 #
0b00000000
0b00000000
0b00000000 # Rest
0b00000000
0b00000000
0b00000000
0b00001101 # 3/4 E-4
0b00001101 #
0b00001101 #
0b00000000
0b00001111 # 1/4 D-4
0b00000000
0b00000000
0b00000000
0b00010001 # 1/4 C-4
0b00000000
0b00000000
0b00000000
0b00001111 # 1/4 D-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000  
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001111 # 1/4 D-4
0b00000000
0b00000000
0b00000000
0b00001111 # 1/4 D-4
0b00000000
0b00000000
0b00000000
0b00001101 # 1/4 E-4
0b00000000
0b00000000
0b00000000
0b00001111 # 1/4 D-4
0b00000000
0b00000000
0b00000000
0b00010001 # 1 C-4
0b00010001 # 
0b00010001 # 
0b00010001 #
0b00000000 # Rest
0b00000000
0b00000000
0b00000000
0b00000000 # Rest
0b00000000
0b00000000
0b00000000
0b00000000 # Rest
0b00000000
0b00000000
0b00000000

: track3 # Row, Row, Row Your Boat
0b00010001 # C-4
0b00010001 # C-4
0b00010001 # C-4
0b00000000 # Rest
0b00000000
0b00000000
0b00010001 # C-4
0b00010001 # C-4
0b00010001 # C-4
0b00000000 # Rest
0b00000000
0b00000000
0b00010001 # C-4
0b00010001 # C-4
0b00000000
0b00001111 # D-4
0b00000000
0b00000000
0b00001101 # E-4
0b00001101 # E-4
0b00001101 # E-4
0b00000000 # Rest
0b00000000
0b00000000
0b00001101 # E-4
0b00001101 # E-4
0b00000000
0b00001111 # D-4
0b00000000
0b00000000
0b00001101 # E-4
0b00001101 # E-4
0b00000000
0b00001100 # F-4
0b00000000
0b00000000
0b00001010 # G-4
0b00001010 # G-4
0b00001010 # G-4
0b00001010 # G-4
0b00001010 # G-4
0b00001010 # G-4
0b00000000 # Rest
0b00000000
0b00000000
0b00000000 # Rest
0b00000000
0b00000000
0b00000101 # C-5
0b00000000
0b00000101 # C-5
0b00000000
0b00000101 # C-5
0b00000000
0b00001010 # G-4
0b00000000
0b00001010 # G-4
0b00000000
0b00001010 # G-4
0b00000000
0b00001101 # E-4
0b00000000
0b00001101 # E-4
0b00000000
0b00001101 # E-4
0b00000000
0b00010001 # C-4
0b00000000
0b00010001 # C-4
0b00000000
0b00010001 # C-4
0b00000000
0b00001010 # G-4
0b00001010 # G-4
0b00000000
0b00001100 # F-4
0b00000000
0b00000000
0b00001101 # E-4
0b00001101 # E-4
0b00000000
0b00001111 # D-4
0b00000000
0b00000000
0b00010001 # C-4
0b00010001 # C-4
0b00010001 # C-4
0b00010001 # C-4
0b00010001 # C-4
0b00010001 # C-4
0b00010001 # C-4
0b00010001 # C-4
0b00010001 # C-4
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000

: track4
0b00000011
0b00000011
0b00000001
0b00000001
0b00001010
0b00001010
0b00000011
0b00000011
0b00000011
0b00000001
0b00000001
0b00000001
0b00000011
0b00000011
0b00000001
0b00000001
0b00001010
0b00001010
0b00000001
0b00000001
0b00000001
0b00000011
0b00000011
0b00001100
0b00000101
0b00000101
0b00000011
0b00000011
0b00001100
0b00001100
0b00000101
0b00000101
0b00000101
0b00000011
0b00000011
0b00001100
0b00000110
0b00000110
0b00000110
0b00000110
0b00000000
0b00000000
0b00001000
0b00001000
0b00001000
0b00001000
0b00000000
0b00000000
0b00000011
0b00000011
0b00000001
0b00000001
0b00001010
0b00001010
0b00000011
0b00000011
0b00000011
0b00000001
0b00000001
0b00000001
0b00000011
0b00000011
0b00000001
0b00000001
0b00001010
0b00001010
0b00000001
0b00000001
0b00000001
0b00000011
0b00000011
0b00001100
0b00000101
0b00000101
0b00000011
0b00000011
0b00001100
0b00001100
0b00000101
0b00000101
0b00000101
0b00000011
0b00000011
0b00001100
0b00000110
0b00000110
0b00000110
0b00000110
0b00000000
0b00000000
0b00001100
0b00001100
0b00001100
0b00000000
0b00011000
0b00000000
0b00010110
0b00000000
0b00010110
0b00000000
0b00010110
0b00000000
0b00010110
0b00010110
0b00010110
0b00011000
0b00011001
0b00011001
0b00011001
0b00011001
0b00000000
0b00011001
0b00011001
0b00011000
0b00000000
0b00011000
0b00011000
0b00011000
0b00011001
0b00011011
0b00011101
0b00010010
0b00010010
0b00011000
0b00011000
0b00010100
0b00010100
0b00000000

: track5
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000

: track6
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000

: track7
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000

: track8
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000
0b00000000